package cockpit.desarollo.DAO;

import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;

import cockpit.DAO.interfaz.ICompras;
import cockpit.comm.DTO.DatosException;
import cockpit.comm.DTO.ProductoDTO;
import cockpit.desarrollo.ConectDB.Conneccion;
import cockpit.desarrollo.ConectDB.Constantes;

public class ComprasDao implements ICompras
{

    private Connection connect = null;

    private ResultSet resultSet = null;

    private final String nombreTablaProductos = Constantes.nombreTablaProductos;
    
    private final String nombreTablaViews = Constantes.nombreTablaViews;
    
    private final String nombreTablaReViews = Constantes.nombreTablaReViews;
    
    private final String nombreTablaInfoProducto = Constantes.nombreTablaInfoProducto;
    
    private final String nombreTablaInfoEnvio= Constantes.nombreTablaInfoEnvio;
    
    private final String nombreTablaImagenes = Constantes.nombreTablaImagenes;
    
    private final String nombreTablaCarritos= Constantes.nombreTablaCarritos;
    
    private final String nombreTablaItemsCarritos= Constantes.nombreTablaItemsCarritos;
   
    
    private Connection getConnect() throws SQLException{
        return Conneccion.getConeccion( );
    }

    /**
     * 
     * @param datos Campos que entran en la consulta como IDUSUARIO
     * @param datosCondicionales condicionales escritos algo=algo
     * @param tablas
     * @param ini
     * @param fin
     * @param order
     * @return
     * @throws SQLException
     * @throws DatosException
     */
    private ArrayList<ProductoDTO> getBD(String[] datos, String[] datosCondicionales , String[] tablas, int ini, int fin ,int order) throws SQLException, DatosException
    {       
            
            return Conneccion.getProductosBD( datos, datosCondicionales, tablas, ini, fin, order );
      
    }
    
    /**
     * 
     * @param datos datos para insertar
     * @param tabla tabla
     * @throws DatosException
     * ejemplo 
     *  
        String[] datos={"idUsuario="+idUsuario,
                "idCategoria="+idCategoria,
                "cantidad="+cantidad,
                "costoVendedor="+costoVendedor,
                "costoCockpit="+costoCockpit,
                "nombreProducto="+nombreProducto,
                "descripcionProducto="+descripcionProducto,
                "historiaProducto="+historiaProducto,
                "Productoscol="+productoscol
                
        };        
        String tabla=nombreTablaProductos;
        insertBD(datos, tabla );
     * @throws SQLException 
     */
    private void insertBD(String [] datos, String tabla ) throws DatosException, SQLException
    {
       Conneccion.insertBD( datos, tabla );

    }
    /**
     * 
     * @param datos
     * @param datosCondicionales
     * @param tabla
     * @throws DatosException
     * ejemplo 
     *  String[] datos={"nombreProducto='"+nombreProducto+"'"};
        String[] datosCondicionales={"idProductos='"+idProducto+"'"};
        String tabla=nombreTablaProductos;
        updateBD(datos, datosCondicionales , tabla ) ;
     */
    private void updateBD(String[] datos, String[] datosCondicionales , String tabla ) throws DatosException
    {
        Conneccion.updateBD( datos, datosCondicionales, tabla );     
    }

    /**
     * 
     * @param datos
     * @param datosCondicionales
     * @param tabla
     * @throws DatosException
     */
            
    private void eliminarBD(String[] datos, String[] datosCondicionales , String tabla ) throws DatosException
    {
        Conneccion.eliminarBD( datosCondicionales, tabla );
    }

    @Override
    public void agregarNuevoCarrito( int idusuarios ) throws DatosException, SQLException
    {
        String[] datos={"idUsuario="+idusuarios               
        };        
        String tabla=nombreTablaCarritos;
        insertBD(datos, tabla );
        
    }

    @Override
    public void agregarProductoCarrito( int idcarrito, int idproductos ) throws DatosException, SQLException
    {
        String[] datos={"idcarrito="+idcarrito,
                "idproductos="+idproductos
        };        
        String tabla=nombreTablaCarritos;
        insertBD(datos, tabla );
        
    }

    @Override
    public ArrayList<ProductoDTO> darProductosCarrito( int idcarrito ) throws SQLException, DatosException
    {
        String[] datos={"*"};
        String[] datosCondicionales={"idcarrito='"+idcarrito+"'"};
        String[] tablas={nombreTablaItemsCarritos};        
        return getBD(datos, datosCondicionales ,tablas, 0, 1000 ,1);
    }

    @Override
    public int idcarritoUsuario( int idusuarios ) throws SQLException, DatosException
    {
        String[] datos={"idcarrito"};
        String[] datosCondicionales={"idusuarios='"+idusuarios+"'"};
        String[] tablas={nombreTablaItemsCarritos};        
        getBD(datos, datosCondicionales ,tablas, 0, 1000 ,1);
        return 0;
    }

    @Override
    public void checkoutCarrito( int idcarrito )
    {
        // TODO Auto-generated method stub
        
    }
    
    
    
    
    
}

